/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.sacodemel.financeiro.mb;

import com.sacodemel.financeiro.modelo.Colheita;
import com.sacodemel.financeiro.modelo.dto.TotalDTO;
import com.sacodemel.financeiro.servico.impl.ColheitasService;
import com.sacodemel.financeiro.servico.IColheitasService;
import com.sacodemel.financeiro.util.JSFUtil;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;

/**
 *
 * @author X4Q1
 */
@ManagedBean
@RequestScoped
public class ColheitasMB {

    private DataModel listaColheitas = null;
    private IColheitasService colheitasService = new ColheitasService();
    private Colheita colheita = new Colheita();
    private TotalDTO total;

    /**
     * @return the listaColheitas
     */
    public DataModel getListaColheitas() {

        if (listaColheitas == null) {

            this.carregaListagem();
        }

        return listaColheitas;
    }

    public String retornaFormulario() {
        return "colheitasForm";
    }

    public String preparaAlteracao() {

        this.carregaRegistroSelecionado();

        return retornaFormulario();
    }

    public String salvar() {

        try {

            colheitasService.salvar(colheita);
            this.finalizaOperacao();
            return voltar();
        } catch (Exception ex) {
            JSFUtil.adicionaMensagemFalha();
        }

        return null;

    }

    public String excluir() {
        try {
            this.carregaRegistroSelecionado();
            colheitasService.excluir(colheita);
            this.finalizaOperacao();
            return voltar();
        } catch (Exception ex) {
            JSFUtil.adicionaMensagemFalha();
        }

        return null;

    }

    public String voltar() {
        return "colheitas";
    }

    /**
     * @param listaColheitas the listaColheitas to set
     */
    public void setListaColheitas(DataModel listaColheitas) {
        this.listaColheitas = listaColheitas;
    }

    /**
     * @return the ivestidoresService
     */
    public IColheitasService getColheitasService() {
        return colheitasService;
    }

    /**
     * @param ivestidoresService the ivestidoresService to set
     */
    public void setColheitasService(IColheitasService colheitasService) {
        this.colheitasService = colheitasService;
    }

    /**
     * @return the colheita
     */
    public Colheita getColheita() {
        return colheita;
    }

    /**
     * @param colheita the colheita to set
     */
    public void setColheita(Colheita colheita) {
        this.colheita = colheita;
    }

    /**
     * @return the total
     */
    public TotalDTO getTotal() {
        return total;
    }

    /**
     * @param total the total to set
     */
    public void setTotal(TotalDTO total) {
        this.total = total;
    }

    private void carregaListagem() {

        try {
            
            List<Colheita> lista = colheitasService.obterListaColheitas();
            total = colheitasService.retornarTotalizadores(lista);
            listaColheitas = new ListDataModel(lista);
            
        } catch (Exception e) {
            JSFUtil.adicionaMensagemFalha(e.getMessage());
        }
    }

    private void carregaRegistroSelecionado() {
        colheita = (Colheita) listaColheitas.getRowData();
    }

    private void finalizaOperacao() {
        JSFUtil.adicionaMensagemSucesso();
        colheita = new Colheita();
        carregaListagem();
    }
}
